GtkSwitch: Don't handle events from extra mouse buttons
authorBastien Nocera <hadess@hadess.net>
Thu, 16 May 2013 12:27:39 +0000 (14:27 +0200)
committerBastien Nocera <hadess@hadess.net>
Sat, 18 May 2013 12:49:55 +0000 (14:49 +0200)
Also use GDK_EVENT_{STOP,PROPAGATE} to make return
values clearer.

https://bugzilla.gnome.org/show_bug.cgi?id=696640

gtk/gtkswitch.c

index 67dc8cd54d530963625e6d4299f5630c44f418d9..ce2b9d98519e724458aeb7a8de31ce4cf47a4de0 100644 (file)
@@ -108,6 +108,10 @@ gtk_switch_button_press (GtkWidget      *widget,
   GtkSwitchPrivate *priv = GTK_SWITCH (widget)->priv;
   GtkAllocation allocation;
 
+  /* Don't handle extra mouse buttons events, let them bubble up */
+  if (event->button > 5)
+    return GDK_EVENT_PROPAGATE;
+
   gtk_widget_get_allocation (widget, &allocation);
 
   if (priv->is_active)
@@ -118,7 +122,7 @@ gtk_switch_button_press (GtkWidget      *widget,
       if (event->x <= allocation.width / 2)
         {
           priv->in_press = TRUE;
-          return TRUE;
+          return GDK_EVENT_STOP;
         }
 
       priv->offset = event->x - allocation.width / 2;
@@ -131,7 +135,7 @@ gtk_switch_button_press (GtkWidget      *widget,
       if (event->x >= allocation.width / 2)
         {
           priv->in_press = TRUE;
-          return TRUE;
+          return GDK_EVENT_STOP;
         }
 
       priv->offset = event->x;
@@ -143,7 +147,7 @@ gtk_switch_button_press (GtkWidget      *widget,
                 "gtk-dnd-drag-threshold", &priv->drag_threshold,
                 NULL);
 
-  return TRUE;
+  return GDK_EVENT_STOP;
 }
 
 static gboolean
@@ -154,10 +158,10 @@ gtk_switch_motion (GtkWidget      *widget,
 
   /* if this is a direct toggle we don't handle motion */
   if (priv->in_press)
-    return FALSE;
+    return GDK_EVENT_PROPAGATE;
 
   if (ABS (event->x - priv->drag_start) < priv->drag_threshold)
-    return TRUE;
+    return GDK_EVENT_STOP;
 
   if (event->state & GDK_BUTTON1_MASK)
     {
@@ -198,10 +202,10 @@ gtk_switch_motion (GtkWidget      *widget,
       /* we need to redraw the handle */
       gtk_widget_queue_draw (widget);
 
-      return TRUE;
+      return GDK_EVENT_STOP;
     }
 
-  return FALSE;
+  return GDK_EVENT_PROPAGATE;
 }
 
 static gboolean
@@ -211,6 +215,10 @@ gtk_switch_button_release (GtkWidget      *widget,
   GtkSwitchPrivate *priv = GTK_SWITCH (widget)->priv;
   GtkAllocation allocation;
 
+  /* Don't handle extra mouse buttons events, let them bubble up */
+  if (event->button > 5)
+    return GDK_EVENT_PROPAGATE;
+
   gtk_widget_get_allocation (widget, &allocation);
 
   /* dragged toggles have a "soft" grab, so we don't care whether we
@@ -218,7 +226,7 @@ gtk_switch_button_release (GtkWidget      *widget,
    * for direct toggles, instead
    */
   if (!priv->is_dragging && !priv->in_switch)
-    return FALSE;
+    return GDK_EVENT_PROPAGATE;
 
   /* direct toggle */
   if (priv->in_press)
@@ -226,7 +234,7 @@ gtk_switch_button_release (GtkWidget      *widget,
       priv->in_press = FALSE;
       gtk_switch_set_active (GTK_SWITCH (widget), !priv->is_active);
 
-      return TRUE;
+      return GDK_EVENT_STOP;
     }
 
   /* toggle the switch if the handle was clicked but a drag had not been
@@ -235,7 +243,7 @@ gtk_switch_button_release (GtkWidget      *widget,
     {
       gtk_switch_set_active (GTK_SWITCH (widget), !priv->is_active);
 
-      return TRUE;
+      return GDK_EVENT_STOP;
     }
 
   /* dragged toggle */
@@ -259,10 +267,10 @@ gtk_switch_button_release (GtkWidget      *widget,
 
       gtk_widget_queue_draw (widget);
 
-      return TRUE;
+      return GDK_EVENT_STOP;
     }
 
-  return FALSE;
+  return GDK_EVENT_PROPAGATE;
 }
 
 static gboolean